package main

import (
	"log"
	"net/http"
	"os"
	"time"

	"github.com/tabalt/gracehttp"
	"github.com/wtf/mahjong/utils"
)

var baseDir = "/wegame/" + utils.Config.PkgName

func main() {

	// 上线之前需配置gracehttp
	Addr := utils.Config.Address
	ReadTimeout := time.Duration(utils.Config.ReadTimeout * int64(time.Second))
	WriteTimeout := time.Duration(utils.Config.WriteTimeout * int64(time.Second))
	pid := os.Getpid()

	utils.P(utils.Config.PkgName, utils.Version(), "started at address:", Addr, " pid:", pid, "at", time.Now())

	// 创造多路复用器
	mux := http.NewServeMux()
	mux.HandleFunc(baseDir+"/login", login)                 // 登录|注册ok
	mux.HandleFunc(baseDir+"/levelNew", levelNew)           // 更新关卡
	mux.HandleFunc(baseDir+"/encryptedData", encryptedData) // 敏感数据获取unionId

	mux.HandleFunc(baseDir+"/rankWorld", rankWorld) // 世界排行榜
	mux.HandleFunc(baseDir+"/gemNew", gemNew)       // 钻石操作
	mux.HandleFunc(baseDir+"/newVideo", newVideo)   // 新视频操作

	mux.HandleFunc(baseDir+"/loadLevel", loadLevel)   // 获取关卡数据
	mux.HandleFunc(baseDir+"/openScene", openScene)   // 开启场景
	mux.HandleFunc(baseDir+"/buyProp", buyProp)       // 购买场景道具
	mux.HandleFunc(baseDir+"/switchProp", switchProp) // 切换场景道具

	mux.HandleFunc(baseDir+"/levelPeople", levelPeople)           // 统计排行榜每关人数
	mux.HandleFunc(baseDir+"/levelPeopleN", levelPeopleN)         // 统计昨日每关通过总人数
	mux.HandleFunc(baseDir+"/levelPeopleToday", levelPeopleToday) // 统计今天每关通过总人数
	mux.HandleFunc(baseDir+"/friends", friends)                   // 3个好友+余额
	mux.HandleFunc(baseDir+"/invite", invite)                     // 邀请新好友
	mux.HandleFunc(baseDir+"/inviteData", inviteData)             // 获取邀请人数以及领取状态
	mux.HandleFunc(baseDir+"/withdraw", withdraw)                 // 提现余额
	mux.HandleFunc(baseDir+"/withdraw2", withdraw2)               // 新版提现余额
	mux.HandleFunc(baseDir+"/withdraw3", withdraw3)               // 新版提现余额
	mux.HandleFunc(baseDir+"/qrcode", qrcode)                     // 获取小程序码
	mux.HandleFunc(baseDir+"/reward", reward)                     // 随机昵称
	mux.HandleFunc(baseDir+"/luck", luck)                         // 开宝箱次数统计

	// 食物
	mux.HandleFunc(baseDir+"/updateStock", updateStock)   // 更新食材
	mux.HandleFunc(baseDir+"/storeOpen", storeOpen)       // 开启店铺
	mux.HandleFunc(baseDir+"/storeLevelUp", storeLevelUp) // 升级店铺
	mux.HandleFunc(baseDir+"/foodUp", foodUp)             // 制作食物
	mux.HandleFunc(baseDir+"/task", task)                 // 更新任务等级or数据

	// 红包碎片
	mux.HandleFunc(baseDir+"/card", card)             // 显示红包碎片
	mux.HandleFunc(baseDir+"/exchangeCard", exchange) // 兑换红包碎片
	mux.HandleFunc(baseDir+"/c1", c1)                 // 请求红包碎片1
	mux.HandleFunc(baseDir+"/c2", c2)                 // 请求红包碎片2

	// 订阅
	mux.HandleFunc(baseDir+"/subscribe", subscribe) // 订阅宝箱提醒

	// 下一版本废除
	mux.HandleFunc(baseDir+"/videos", videos)               // 视频操作
	mux.HandleFunc(baseDir+"/generalInvite", generalInvite) // 通用邀请+好友+钻石

	mux.HandleFunc(baseDir+"/test", test)   // test
	mux.HandleFunc(baseDir+"/test1", test1) // test
	// mux.HandleFunc(baseDir+"/downRedis", downRedis) // 下载redis排行榜数据

	// mux.HandleFunc(baseDir+"/addRedPacket", addRedPacket)       // 新增过关红包
	// mux.HandleFunc(baseDir+"/getRedPacket", getRedPacket)       // 获取过关红包列表
	// mux.HandleFunc(baseDir+"/helpRedPacket", helpRedPacket)     // 好友助力开启过关红包
	// mux.HandleFunc(baseDir+"/insertRedPacket", insertRedPacket) // 领取红包
	// mux.HandleFunc(baseDir+"/drawRedPacket", drawRedPacket)     // 提现红包
	// mux.HandleFunc(baseDir+"/checkIsNewx", checkIsNewx) // 检测是否为新红包玩家
	// mux.HandleFunc(baseDir+"/checkMonth", checkMonthx)  // 检测是否为月卡
	// mux.HandleFunc(baseDir+"/video", video)             // 视频次数统计
	// mux.HandleFunc(baseDir+"/dailyClick", dailyClick)   // 每日分享被点击次数
	// mux.HandleFunc(baseDir+"/addCard", addCard) // 新增福卡
	// mux.HandleFunc(baseDir+"/prop2gem", prop2gem) //道具转钻石-temp
	// mux.HandleFunc(baseDir+"/inviteCard", inviteCard)         // 邀请新好友领福卡
	// mux.HandleFunc(baseDir+"/inviteCardList", inviteCardList) // 邀请新好友领福卡列表
	// mux.HandleFunc(baseDir+"/inviteCardGet", inviteCardGet)   // 邀请新好友领福卡领卡
	// mux.HandleFunc(baseDir+"/invitePacket", invitePacket)         // 邀请新好友领3毛红包
	// mux.HandleFunc(baseDir+"/inviteEight", inviteEight)           // 邀请新好友领3毛红包
	// mux.HandleFunc(baseDir+"/invitePacketList", invitePacketList) // 邀请新好友领红包列表
	// mux.HandleFunc(baseDir+"/invitePacketGet", invitePacketGet)   // 邀请新好友领红包领取
	// mux.HandleFunc(baseDir+"/gem", gem) // 钻石操作
	// mux.HandleFunc(baseDir+"/getUserInfo", getUserInfo) // 获取用户头像以及昵称
	// mux.HandleFunc(baseDir+"/signin", signin)         // 签到
	// mux.HandleFunc(baseDir+"/signinNew", signinNew)   // 签到
	// mux.HandleFunc(baseDir+"/randPlayer", randPlayer) // 三消用户获取随机ai用户信息
	// mux.HandleFunc(baseDir+"/generalInviteList", generalInviteList) // 通用邀请列表
	// mux.HandleFunc(baseDir+"/generalInviteGet", generalInviteGet)   // 通用邀请领取钻石

	err := gracehttp.ListenAndServe(Addr, ReadTimeout, WriteTimeout, mux)

	if err != nil {
		log.Printf("process with pid %d stoped, error: %s.\n", pid, err)
	}
}
